﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataAccessComponents;
using System.Collections.ObjectModel;
using DAL;

namespace BusinessLogicLayer
{
    public class PromocjaBL : IBusinessLogicLayer<Promocja>
    {
        private DbOperations dal = new DbOperations();

        /// <summary>
        /// Funckcja dodająca promocja do bazy danych
        /// </summary>
        /// <param name="objDodaj">Obiekt do dodania</param>
        /// <returns>Indeks dodanego wiersza</returns>
        public int dodaj(Promocja objDodaj)
        {
            return dal.dodajPromocja(objDodaj);
        }

        /// <summary>
        /// Funkcja usuwająca promocja z bazy danych
        /// </summary>
        /// <param name="idusun">Id wiersza do usuniecia</param>
        public void usun(int idusun)
        {
            dal.usunPromocja(idusun);
        }

        /// <summary>
        /// Funkcja akutalizująca promocja
        /// </summary>
        /// <param name="objAktualizuj">Obiekt do aktualizacji </param>
        public void aktualizuj(Promocja objAktualizuj)
        {

            dal.aktualizujPromocja(objAktualizuj);
        }

        /// <summary>
        /// Funkcja zwracająca promocja o danym id
        /// </summary>
        /// <param name="idpobierz"></param>
        /// <returns></returns>
        public Promocja pobierz(int idpobierz)
        {

            Promocja promocja = dal.pobierzPromocja(idpobierz);

            return promocja;
        }

        /// <summary>
        /// Funkcja zwracająca liste promocjaów
        /// </summary>
        /// <returns></returns>
        public ObservableCollection<Promocja> pobierzListe()
        {
            ObservableCollection<Promocja> tmp = dal.pobierzListePromocja();

            return tmp;
        }

        /// <summary>
        /// Funkcja aktualizująca pozyjce promocjaow w bazie danych, a gdy id_promocja wynosi 0 to dodaje go do bazy
        /// </summary>
        /// <param name="lista">Lista obiektów do zakutalizowania</param>
        /// <returns></returns>
        public bool aktualizujListe(ObservableCollection<Promocja> lista)
        {
            AdresBL adresBL = new AdresBL();
            foreach (Promocja promocja in lista)
            {
                if (promocja.Id_promocja == 0)
                {
                    this.dodaj(promocja);
                }
                else
                {
                    this.aktualizuj(promocja);
                }
            }
            return true;
        }

        public bool usun(ObservableCollection<Promocja> lista)
        {

            foreach (Promocja promocja in lista)
            {
                // usuwanie promocjau
                this.usun(promocja.Id_promocja);


            }
            return true;
        }
    }
}
